package sv.gob.mh.dgii.model.pojos;

import java.io.Serializable;
import java.util.Set;
import sv.gob.mh.dgii.model.ImSolicitud;
import sv.gob.mh.dgii.model.RcCaractTrib;
import sv.gob.mh.dgii.model.RcRepresentante;
import sv.gob.mh.dgii.model.RcRuc;

public class ImSolicitudPojo implements Serializable {

    private ImSolicitud imSolicitud;

    public ImSolicitudPojo() {
    }

    public ImSolicitudPojo(ImSolicitud imSolicitud) {
        this.imSolicitud = imSolicitud;
    }

    public String getNombreCompletoContribuyente() {
        String ret = null;
        if (imSolicitud != null) {
            ret = getNombreCompleto(imSolicitud.getRcRucByNit());
        }
        return ret;
    }

    public String getNombreCompletoRepresentante() {
        String ret = null;
        if (imSolicitud != null) {
            ret = getNombreCompleto(imSolicitud.getRcRucByNitRepresentante());
        }
        return ret;
    }    
    
    
    public String getNombreCompletoPropietario() {
        String ret = null;
        if (imSolicitud != null) {
            ret = getNombreCompleto(imSolicitud.getRcRucByNitPropietario());
        }
        return ret;
    }    
    
    
    public String getNrc() {
        String ret = "-";
        if (imSolicitud != null) {
            RcCaractTrib rcCaractTrib = getNrcFormato(imSolicitud.getRcRucByNit());
            if ((rcCaractTrib.getId() != null
                    && rcCaractTrib.getId().getCcaractTrib() != null
                    && rcCaractTrib.getId().getCcaractTrib().equalsIgnoreCase("nrc"))
                    && (rcCaractTrib.getBstatus() != null && rcCaractTrib.getBstatus())) {
                ret = rcCaractTrib.getId().getNcaractTrib();
                // TODO: formato NRC al ret
                ret =  ret.trim().substring(0, ret.trim().length() -1) + "-" + ret.trim().substring(ret.trim().length()-1, ret.trim().length() );
                // ...substring(3,4)
            }
        }
        return ret;
    }
    
    
    public String getNitRepresentante(){
        String ret = "-";
        if (imSolicitud != null) {
            RcRuc representante = imSolicitud.getRcRucByNitRepresentante();
            
            RcRepresentante rcRepresentante = getNitFormato(imSolicitud.getRcRucByNitRepresentante());
            if ((rcRepresentante.getRcRucByNitRepresentante() != null
                    && rcRepresentante.getRcRucByNitRepresentante().getNit() != null)){
                ret = rcRepresentante.getRcRucByNitRepresentante().getNit();
                // TODO: formato NIT al ret
                //ret =  ret.trim().substring(0, ret.trim().length() -1) + "-" + ret.trim().substring(ret.trim().length()-1, ret.trim().length() );
                // ...substring(3,4)
            }
        }
        return ret;    
    }

    public static String getNombreCompleto(RcRuc ruc) {
        String ret = null;
        if (ruc != null) {
            ret = ruc.getS1apeRasoc() != null ? ruc.getS1apeRasoc().trim() : null;

            if (ruc.getSnombres() != null) {
                ret = ruc.getSnombres().trim() + " " + ret;
            }
            if (ruc.getS2apeAbrev() != null) {
                ret = ret + " " + ruc.getS2apeAbrev().trim();
            }
            if (ruc.getS2apeAbrev() == null && ruc.getSnombres() == null) {
                ret = ruc.getS1apeRasoc() != null ? ruc.getS1apeRasoc().trim() : null;
            }
        }
        return ret;
    }

    public static RcCaractTrib getNrcFormato(RcRuc ruc) {
        RcCaractTrib ret = null;
        Set<RcCaractTrib> nrcs = ruc.getRcCaractTribs();
        if (nrcs != null && nrcs.size() > 0) {
            ret = nrcs.iterator().next();
        }
        return ret;

    }

    
     public static RcRepresentante getNitFormato(RcRuc ruc) {
        RcRepresentante ret = null;
        Set<RcRepresentante> nits = ruc.getRcRepresentantesForNit();
        if (nits != null && nits.size() > 0) {
            ret = nits.iterator().next();
        }
        return ret;

    }

    /**
     * @return the imSolicitud
     */
    public ImSolicitud getImSolicitud() {
        return imSolicitud;
    }

    /**
     * @param imSolicitud the imSolicitud to set
     */
    public void setImSolicitud(ImSolicitud imSolicitud) {
        this.imSolicitud = imSolicitud;
    }


}
